package com.itheima.test31;

import java.io.FileReader;
import java.io.IOException;
import java.util.Base64;
import java.util.Properties;
import java.util.Set;

/*
三 编程题【properties】


如上有两个文件， 请把这两个文件复制到idea中。
properties文件中有两个键值对字符串分别为
username=zhangsan
password=123456
请用properties的方法读取到Properties对象中。
1.用Base64Demo提供的加密方法对value值进行加密，把加密后的数据覆盖到原properties文件中
2.读取加密后的properties中的数据，把加密的密文进行解密 打印在控制台
 */
public class Test31 {
    public static void main(String[] args) throws IOException {
        Properties pro = new Properties();
        FileReader fr = new FileReader("homewrok0919\\src\\com\\itheima\\prop.properties");

        pro.load(fr);
        fr.close();
//        System.out.println(pro);//@测试

        Set<String> obj = pro.stringPropertyNames();
        //遍历每个value，加密
        for (String key : obj) {
            String value = pro.getProperty(key);
            String encryptValue = encrypt(value);
            pro.setProperty(key,encryptValue);
//            System.out.println("key=" + key + ",value=" + value);//@测试
//            System.out.println("key=" + key + ",value=" + encryptValue);//@测试
        }

        for (String key : obj) {
            String value = pro.getProperty(key);
            String deValue = decode(value);

            System.out.println("键:" + key + "=值:" + deValue);
        }
    }

    public static String encrypt(String str){
        //创建加密对象
        Base64.Encoder base64 = Base64.getEncoder();
        //获取加密后的字节数组
        byte[] encode = base64.encode(str.getBytes());
        //把密文转换为字符串
        String s = new String(encode);
        //返回
        return s;
    }

    //解密方法
    public static String decode(String str){
        //创建解密对象
        Base64.Decoder decoder = Base64.getDecoder();
        //获取解密字节数组
        byte[] decode = decoder.decode(str);
        //获取原文
        String s = new String(decode);
        //返回
        return s;
    }
}
